          SUBROUTINE (OID.ID)
** Version# 66.0002[2] - 08/08/2017 - 07:46am - TSMITH - eclipse
*** V66.0002 Change - Custom Coding . - 08/08/2017 - TSMITH - eclipse
*** V66.0001 Change - Custom Coding . - 06/11/2015 - TSMITH - eclipse

*** Subroutine: WHSE.PICK.CONFIRM
*-------------------------------------------------------------------------*
*** This routine will allow users to manually change review queue
*** statuses.
*-------------------------------------------------------------------------*
*** OID.ID - Order#.Gid                                           [IN]
*-------------------------------------------------------------------------*
*** Common Variables: LED, CUS, LD
*-------------------------------------------------------------------------*

          UT.OPEN.FILE "MANIFESTS",MNFSTFILE,ERR.MSG,YES
          IF ERR.MSG THEN RETURN

          SCREEN
          VSCROLL.ROWS = 4
          VSCROLL.DEFINE 1,1,11,65,VSCROLL.ROWS,"WHSE.PICK.CONFIRM"
          VSCROLL.SET 1
          LAST.MODE = ""
*-------------------------------------------------------------------------*
START:    *** Clear screen and initialize variables.

          CLEAR.SCREEN
          GOSUB INIT
*-------------------------------------------------------------------------*
IN.OID:   *** The transaction number for the order you want to update.

          IF OID.ID = '' THEN
IN$$1:       INP ID,18,1,14,"MCU"
          END ELSE
             ID = OID.ID
          END

          IF HELP AND ID="" THEN
             HIST.OPT = 1
             IF LAST.MODE = "T" THEN
                HIST.OPT = 3
             END
             USER.VIEW.HISTORY HIST.OPT,ID
          END
          VIEW.ONLY = NO
          VONLY.MSG = ""
          IF QUIT THEN GOTO FINISH
          OID  = FIELD(ID,".",1)
          INVN = FIELD(ID,".",2)+0
          MATREAD LED FROM LEDFILE,OID ELSE PRINT BELL:; GOTO IN.OID
          LOCATE INVN IN LED(8)<1> SETTING GEN ELSE
             OE.SELECT.SHIPDATE OID,GEN,,NO
             IF GEN+0=0 THEN GOTO IN.OID
          END
          IF LED(6)<1,GEN> = "$" OR LED(6)<1,GEN> = "X" OR LED(6)<1,GEN> = "Y" THEN
             PRINT BELL:
             GOTO IN.OID
          END
          STK.BR = LED(2)<1,GEN,2>

          READ LEDL FROM LEDLFILE,OID ELSE LEDL = ""
*-------------------------------------------------------------------------*
ID.VER:   *** Verify order id and get valid in process statuses

          READV SFLAG FROM CTRBFILE,"SERIAL.PROMPT~":STK.BR,1 ELSE
             SFLAG = ""
          END

          OE.WHQ.MODE OID,GEN,UPD.WHQ,YES

          MODE        = OID[1,1]
          LAST.MODE   = MODE

          OE.GET.QSIGN QSIGN,OID,GEN
          PRC.BR   = LED(2)<1,GEN,1>
          BR       = LED(2)<1,GEN,2>
          BT.CN    = LED(1)<1,GEN>
          ST.CN    = LED(5)<1,GEN>
          SHIP.VIA = LED(70)<1,GEN>
          READ SVIA FROM SVIAFILE,SHIP.VIA ELSE SVIA = ""
          AUTO.LOAD.MANIFEST = SVIA<9,4>
          GET.CUS BR,BT.CN,ST.CN,QSIGN
          INVN = LED(8)<1,GEN>
          IF INVN THEN
             ORN = OID:".":INVN"R%3"
             ORDER.ID = ORN
          END ELSE
             ORN = OID
             ORDER.ID = OID:".":LED(12)<1,GEN>"R%4"
          END

          GOSUB GET.PKG.DATA

          SLIST = ""
          GOSUB GET.SLIST

          * Need to read standard values.  Replace status variables
          * if null. Read valid inprocess status for this shipvia.
          * 1st check at branch level.  If not at branch level
          * then check at shipvia level

          OE.SV.STATUS.GET LED(2)<1,GEN,2>,LED(70)<1,GEN>,STAT.STR

          STAT.CNT = DCOUNT(STAT.STR,VM)
          IF TRIM(STAT.STR<1,1>) = "" THEN
             EMSG = "No Valid Inprocess Statuses Defined."
             EMSG<-1> = "Cannot Continue, <Return> "
             ERR.MESS 1,1,EMSG
INPRC.RSP:   INP A,27,2,1
             GOTO IN.OID
          END
          BEGIN CASE
          CASE MODE = "S" AND LED(6)<1,GEN> # "I"
             STAT      = ""
             NEXT.STAT = STAT.STR<1,1>
          CASE MODE = "T" AND LED(6)<1,GEN> # "S"
             STAT      = ""
             NEXT.STAT = STAT.STR<1,1>
          CASE OTHERWISE
             IF STAT = "" THEN
                STAT = STAT.STR<1,1>
                NEXT.STAT = STAT.STR<1,2>
             END ELSE
                UC.STAT.STR = UPCASE(STAT.STR)
                LOCATE UPCASE(STAT) IN UC.STAT.STR<1> SETTING POS THEN
                   NEXT.STAT = STAT.STR<1,POS+1>
                END ELSE
                   NEXT.STAT = ""
                END
             END
             IF TRIM(NEXT.STAT) = "" AND NOT(VIEW.ONLY) THEN
                NEXT.STAT = "CLOSE"
             END
          END CASE

          GOSUB CHECK.AUTH
          IF NOT(AUTH.OK) THEN RETURN
          GOSUB LOAD.HOTKEYS
          GOSUB DISPLAY
          IF VIEW.ONLY THEN
             IF VONLY.MSG THEN
                MESS 10,10,BELL:VONLY.MSG
                VONLY.MSG = ""
             END
             GOTO IN.OID
          END
*-------------------------------------------------------------------------*
*** User ID associated with the in-process status
INUSER:   INP PICKER,24,6,10,V_"INITIALS"
          IF QUIT THEN GOTO FILEIT
          ON MOVE+1 GOTO INUSER,INUSER,INUSER,INUSER
*-------------------------------------------------------------------------*
          LINE = 1; COL = 1; MOVE = 0; LASTKEY = 0; QUIT = 0
          IF DISP.HDR THEN
             COLS = 7
          END ELSE
             COLS = 5
          END
*-------------------------------------------------------------------------*
MOVENEXT: *** Controls movements in the vscroll region.

          IF QUIT THEN
             MOVE = 0; LASTKEY = 0
             GOTO FILEIT
          END
          LINES = DCOUNT(TLOCS,AM)
          DNOK = (LINE <= LINES)
          PARSEMOVE COL,LINE,COLS,VSCROLL.ROWS,4,DNOK,DNOK,BORDERMOVE
          IF BORDERMOVE = 2 THEN GOTO INUSER

          * Disallow pkg data if no staging location
          IF TLOCS<LINE> = "" THEN
             MOVE = 0
             COL  = 1
          END
          ON COL GOTO INSTG, INPKG, INPKG, INPKG, INPKG, INQTY, INTRKR
*-------------------------------------------------------------------------*
*** If status is Staging, enter warehouse location in which the
*** order is staged either for packing or waiting to be shipped.
INSTG:    INPV STAGE,0,LINE,12
          IF F12 THEN GOTO FILEIT

          IF STAGE # TLOCS<LINE> THEN
             IF STAGE = "" THEN
                IF TRIM(TPKGS<LINE>,VM) # "" OR TQTYS<LINE>+0 # 0 OR TRKIDS<LINE> # "" THEN
                   PRINT BELL:
                   STAGE = TLOCS<LINE>
                   VPRINT 0,LINE,STAGE "L#12"
                   GOTO INSTG
                END
             END
             TOTES<LINE> = PICKER
             TLOCS<LINE> = STAGE
          END
          GOTO MOVENEXT
*-------------------------------------------------------------------------*
*** Enter the number of bags, boxes, containers, and pallets
*** located in the staging location for the order.
INPKG:    INPV TEMP,13+(COL-2)*8,LINE,6,"R",H_"WHSE.PICK.CONFIRM~IN$$3"
          IF F12 THEN GOTO FILEIT

          IF TEMP # TPKGS<LINE,COL-1> THEN
             TPKGS<LINE,COL-1> = TEMP
          END
          GOTO MOVENEXT
*-------------------------------------------------------------------------*
*** Enter the number of items packed in the line item.
INQTY:    INPV TEMP,45,LINE,8,"R"
          IF F12 THEN GOTO FILEIT

          TQTYS<LINE>  = TEMP
          GOTO MOVENEXT
*-------------------------------------------------------------------------*
*** Enter the tracking number for the package.
INTRKR:   INPV TEMP,55,LINE,9
          IF F12 THEN GOTO FILEIT

          TRKIDS<LINE> = TEMP
          GOTO MOVENEXT
*-------------------------------------------------------------------------*
SUBS:     *** Internal subroutines triggered by hotkeys.
          DRPT = ""
          ON OPTION GOTO CONFIRM, PRT.CPY, VIEW.OID, VIEW.OID, LBL.PRT, INPROC, FGHT, READY.MNFST, MNFST.COMMENTS, EDIT.MNFST, SER.NUM, CTN.STATUS
*-------------------------------------------------------------------------*
CONFIRM.PACK:  *** User is confirming the order into PACKING status

          PACK.ENABLED STK.BR,LED(70)<1,GEN>,PK.ENABLE
          IF NOT(PK.ENABLE) THEN RETURN

          * Check the control record to determine if we need to auto
          * display the Order Packing screen, prompt the user if they
          * would like to pack the order, or do nothing.
          READV PMODE FROM CTRLFILE,"PACK.WHSE.CONF",1 ELSE PMODE = ""

          BEGIN CASE
             CASE PMODE[1,1] = "P"             ;* Prompt
                USE.PACK = "Y"
ORD.PACK.PRMT:  INP.PROMPT USE.PACK,"Use Order Packing to pack this order? (Y/N) : ","YN",1
                IF NOT(USE.PACK) THEN RETURN
             CASE PMODE[1,1] = "A"             ;* Auto Popup
                USE.PACK = YES
             CASE OTHERWISE                    ;* No Packing
                RETURN
          END CASE

          IF USE.PACK THEN
             VAR    = OID
             VAR<2> = GEN
             VAR<3> = STK.BR
             PACK.MAINT VAR
          END

          RETURN
*-------------------------------------------------------------------------*
CONFIRM:  *** Confirm order to next status and print ship ticket if user
          *** chooses to.

          LOG.CMT = "IP status changed"
          LOG.CMT = LOG.CMT:" from ":STAT:" to ":NEXT.STAT:" by ":PICKER
          OE.ADD.COMMENT OID,GEN,LOG.CMT

          IF NEXT.STAT = "SIGNATURE" THEN
             * Start Signature Capture application
             EPAD.APP.START OID,GEN

             * Advance immediately to next status.
             STAT = NEXT.STAT
             LOCATE NEXT.STAT IN STAT.STR<1> SETTING POS ELSE NULL
             NEXT.STAT = STAT.STR<1,POS+1>
             IF TRIM(NEXT.STAT) = "" THEN NEXT.STAT = "CLOSE"
             GOSUB DISPLAY
             GOTO CONFIRM
          END

          GOSUB UPD.PKG.DATA
          IF NEXT.STAT # "CLOSE" AND NEXT.STAT # "SIG-CLOSE" THEN
             IF NEXT.STAT[1,4] = "PICK" THEN
                PRVW<10> = PICKER
                * add log info
                LPOS = DCOUNT(PRVW<22>,VM)+1
                PRVW<22,LPOS,1> = "TOE.PH.PRINT.BATCH"
                PRVW<22,LPOS,2> = DATE()
                PRVW<22,LPOS,3> = INT(TIME())
                PRVW<22,LPOS,4> = "Updated picker "
                OE.LOCK.LED OID,LOCK.MSG,YES
                IF NOT(LOCK.MSG) THEN
                   MAT OLED = MAT LED
                   LED(66)<1,GEN> = PICKER
                   UPDATE.LEDGER OID,GEN
                   OE.UNLOCK.LED OID
                END
             END
             IF NEXT.STAT = "STAGING" THEN
             GOSUB UPD.PRVW; * Update PRINT.REVIEW record with pkg data
             SN.AUTO.CLOSE = YES
             GOSUB SER.NUM
             SN.AUTO.CLOSE = NO
             END
             IF NEXT.STAT = "PACKING" THEN
                GOSUB CONFIRM.PACK
             END
             GOSUB UPD.PRVW
             OE.ORDER.STATUS.UPD OID,GEN,NEXT.STAT,ERR.MSG
             STAT = NEXT.STAT
             LOCATE STAT IN STAT.STR<1> SETTING POS ELSE NULL
             NEXT.STAT = STAT.STR<1,POS+1>
             IF TRIM(NEXT.STAT) = "" THEN NEXT.STAT = "CLOSE"

             PRINT @(24,7):STAT      "L#13"
             PRINT @(52,7):NEXT.STAT "L#13"

             VAR = ""
             MSG = "Order# ":OID:" Status Confirmed to ":STAT:"."
             MSG<-1> = "Next Status ":NEXT.STAT:".  <Return> "
             MSG = MSG:BELL
CONF.STAT:   INP.PROMPT VAR,MSG



             IF NEXT.STAT = "MANIFEST" AND AUTO.LOAD.MANIFEST THEN
                READ PRVW FROM PRVWFILE,RVW.ID ELSE PRVW = ""
                OLD.PRVW = PRVW
                GOTO CONFIRM; * Confirm directly to MANIFEST
             END

          END ELSE
             * Close from PRINT.REVIEW file if closed
             GOSUB UPD.PRVW; * Update PRINT.REVIEW record with pkg data
             SN.AUTO.CLOSE = YES
             GOSUB SER.NUM
             SN.AUTO.CLOSE = NO
             CASH.RQ = SVIA<5>
             IF MODE = "S" AND CASH.RQ = "P" THEN
                GOSUB CHECK.CASH; * Check for cash required
                IF PMNT.REQD AND NOT(PMNT.MADE) THEN
                   * Payment was required, but no payment made,
                   * Can't confirm, return
                   RETURN
                END
             END

             * Prompt user if they'd like to print a ship ticket.
             ANS = ""
PRT.TICKET:  INP.PROMPT ANS,"Do you want to print a ship ticket now? : ","MCU",11,"D:,Yes,No,Abort Close"

             * If aborting out of print then abort out of close also.

             IF QUIT OR ANS[1,1] = "A" THEN
                RETURN
             END

             IF ANS[1,1] = "Y" THEN
                BEGIN CASE
                CASE MODE = "S"
                   NUM.PGS = ""
                   SOE.PRINT.ORDER OID,GEN,NUM.PGS,"O"
                CASE MODE = "T"
                   TOE.PRINT.ORDER OID,GEN,,"O"
                END CASE
             END

             IF NEXT.STAT = "SIG-CLOSE" THEN
                EPAD.APP.START OID,GEN
             END
             DELETE PRVWFILE,RVW.ID

          END

          IF TTY.RELOG% THEN RELOG.NOW = YES; RETURN TO FINISH

          RETURN TO START
*-------------------------------------------------------------------------*
GET.PKG.DATA: *** Get packing data

          * Read values from PRINT.REVIEW file if record exists
          RVW.ID = OID:".":LED(12)<1,GEN>"R%4"
          READ PRVW FROM PRVWFILE,RVW.ID THEN
             GOSUB SET.VONLY
             STAT    = PRVW<1>
             PICKER  = PRVW<10>
             TOTES   = RAISE(RAISE(PRVW<11>))
             TLOCS   = RAISE(RAISE(PRVW<13>))
             TPKGS   = RAISE(RAISE(PRVW<14>))
             TRKIDS  = RAISE(RAISE(PRVW<20>))
             TQTYS   = RAISE(RAISE(PRVW<21>))

             IF TLOCS  = "" THEN
                TOTES  = RAISE(RAISE(LEDL<21,GEN>))
                TLOCS  = RAISE(RAISE(LEDL<22,GEN>))
                TPKGS  = RAISE(RAISE(LEDL<35,GEN>))
                TRKIDS = RAISE(RAISE(LEDL<40,GEN>))
                TQTYS  = RAISE(RAISE(LEDL<41,GEN>))
             END
          END ELSE
             VIEW.ONLY = YES
             IF INVN THEN
                PRVW = "CLOSED"
             END ELSE
                PRVW = ""
             END
             STAT    = PRVW<1>
             PICKER  = ""
             TOTES  = RAISE(RAISE(LEDL<21,GEN>))
             TLOCS  = RAISE(RAISE(LEDL<22,GEN>))
             TPKGS  = RAISE(RAISE(LEDL<35,GEN>))
             TRKIDS = RAISE(RAISE(LEDL<40,GEN>))
             TQTYS  = RAISE(RAISE(LEDL<41,GEN>))
          END
          OLD.PRVW = PRVW

          IF TRIM(PICKER) = "" THEN
             PICKER = USER.ID
          END

          RETURN
*-------------------------------------------------------------------------*
UPD.PKG.DATA: *** Update packing information

          PRVW<11> = LOWER(LOWER(TOTES))
          PRVW<13> = LOWER(LOWER(TLOCS))
          PRVW<14> = LOWER(LOWER(TPKGS))
          PRVW<20> = LOWER(LOWER(TRKIDS))
          PRVW<21> = LOWER(LOWER(TQTYS))
          * add log info
          LPOS = DCOUNT(PRVW<22>,VM)+1
          PRVW<22,LPOS,1> = "WHSE.PICK.CONFIRM"
          PRVW<22,LPOS,2> = DATE()
          PRVW<22,LPOS,3> = INT(TIME())
          PRVW<22,LPOS,4> = "Package Data Updated "

          RETURN
*-------------------------------------------------------------------------*
PRT.CPY:  *** Reprint a copy of the pick ticket

          ACTION.OK = NO
          IF MODE = "S" OR MODE = "T" THEN
             PRMPT    = "Reprint a Pick Ticket"
             KEY.REQD = "SOE.REPRINT.PICK.TICK"
             OE.GET.AUTH OID,PRMPT,KEY.REQD,ACTION.OK,GEN
          END
          IF ACTION.OK THEN
             GOSUB UPD.PKG.DATA
             GOSUB UPD.PRVW
             BEGIN CASE
             CASE MODE = "S"
                SOE.PRINT.ORDER OID,GEN,,"T"
             CASE MODE = "T"
                TOE.PRINT.ORDER OID,GEN,,"T"
             END CASE
          END

          RETURN
*-------------------------------------------------------------------------*
VIEW.OID: *** View order

          VONLY = (OPTION=3)
          OE.EXEC MODE,1,OID,GEN,VONLY
          MATREAD LED FROM LEDFILE,OID ELSE PRINT BELL:; GOTO IN.OID
          IF OPTION = 4 THEN
             SLIST = ""
             GOSUB GET.SLIST
             GOSUB LOAD.HOTKEYS
          END

          RETURN
*-------------------------------------------------------------------------*
LBL.PRT:  *** Print shipping labels

          *** Write package information to disk so the labels can use it
          GOSUB UPD.PKG.DATA
          GOSUB UPD.PRVW

          LDIDS      = RAISE(LED(48)<1,GEN>)
          LD.CT      = DCOUNT(LDIDS,AM)
          LDID       = LDIDS<1,1>
          ORIG.LDID  = LDID
          TOT.CNT    = SUMMATION(TPKGS)

          * There is a "special" way to tell downstream processing that
          * this call is from the Warehouse Picking Confirmation screen.
          * This screen does NOT allow the user the opportunity to select
          * an item on the order, so the "Current Item Only" selection is
          * invalid which makes the "ORIG.LDID" meaningless.
          *
          * So, we indicate that this is the Warehouse Picking Confirmation
          * by putting "special" information into the "ORIG.LDID".
          * "ORIG.LDID" contains:
          *     1) The string "PICK.CONF"
          *     2) The sum of the containers defined as Staging Loc.
          ORIG.LDID      = ""
          ORIG.LDID<1,1> = "PICK.CONF"   ;* Magic Keyword for this screen
          ORIG.LDID<1,2> = TOT.CNT

          * With Tracker CTN310 (SEpt 2006), the UD.DVR.DOC.PRINT.WHSE is
          * no longer to be called.  There is only 1 label printing
          * program and it is  UD.DVR.DOC.PRINT.
          *
          * UD.DVR.DOC.PRINT.WHSE ,LD.CT,OID,GEN,ORIG.LDID,TOTAL.PKG.CNT=TOT.CNT
          TYPE = 'N'
          UD.DVR.DOC.PRINT       TYPE,LD.CT,OID,GEN,ORIG.LDID

          OID = FIELD(OID,".",1)

          RETURN
*-------------------------------------------------------------------------*
INPROC:   *** Edit In Process order

          WHSE.QUEUE.EDIT OID:".":LED(12)<1,GEN>

          RETURN
*-------------------------------------------------------------------------*
FGHT:     *** Freight hotkey

          SV.VIEW.ONLY = VIEW.ONLY
          IF NOT(VIEW.ONLY) THEN
             OE.LOCK.LED OID,LOCK.MSG,YES
             IF LOCK.MSG THEN
                VIEW.ONLY = YES
             END
          END
          MAT OLED = MAT LED
          GET.CUS PRC.BR,BT.CN,ST.CN,QSIGN
          SOE.FGHT.CALC OID,GEN,QSIGN,GEN,VIEW.ONLY
          IF NOT(VIEW.ONLY) THEN
             GEN.MVT = GEN
             OE.TAX.CLEAR OID,GEN.MVT
             OE.TAX.CALC  OID,GEN.MVT,QSIGN
             UPDATE.LEDGER OID,GEN.MVT
             OE.UNLOCK.LED OID
          END
          VIEW.ONLY = SV.VIEW.ONLY

          RETURN
*-------------------------------------------------------------------------*
READY.MNFST: *** Prepare and add order to manifest if allowed.

          CHK.TOTE = YES
          GOSUB CHK.INPROCESS
          IF NOT(ORD.OPEN) THEN
             SOE.MANIFEST.READY ORN,GEN,PRVW,ERR.FLG
             * Re-read manifest info and display appropriate hotkeys
             IF NOT(ERR.FLG) OR ERR.FLG = 2 THEN
                LOG.CMT = "IP status changed"
                LOG.CMT = LOG.CMT:" from ":STAT:" to ":NEXT.STAT:" by ":PICKER
                IF NOT(ERR.FLG) THEN
                   OE.ADD.COMMENT OID,GEN,LOG.CMT
                END

                * Change review status to MANIFEST
                STAT = "MANIFEST"
                GOSUB UPD.PRVW
                OE.ORDER.STATUS.UPD OID,GEN,STAT,ERR.MSG
                READ PRVW FROM PRVWFILE,RVW.ID ELSE PRVW = ""
                LOCATE STAT IN STAT.STR<1> SETTING POS ELSE NULL
                NEXT.STAT = STAT.STR<1,POS+1>
                IF TRIM(NEXT.STAT) = "" THEN NEXT.STAT = "CLOSE"
                PRINT @(24,7):STAT      "L#13"
                PRINT @(52,7):NEXT.STAT "L#13"
             END
             GOSUB LOAD.HOTKEYS
             GOSUB DISPLAY
          END ELSE
             GOSUB DISP.INP.ERR
          END

          RETURN
*-------------------------------------------------------------------------*
MNFST.COMMENTS: *** Edit/View comments on manifest

          IF MNFST # "" THEN
             VIEW.ONLY = NO
             IF MNFST<7> THEN
                VIEW.ONLY = YES
             END ELSE
                CHECK.KEY "SOE.MANIFEST.EDIT",EDIT.OK, EDIT.LVL
                IF NOT(EDIT.OK) THEN
                  VIEW.ONLY = YES
                END
             END

             DONE = NO
             DCNT = DCOUNT(MNFST<10>,@VM)
             FOR C = 1 TO DCNT UNTIL DONE
                SCNT = DCOUNT(MNFST<15,C>,@SVM)
                FOR S = 1 TO SCNT UNTIL DONE
                   IF MNFST<15,C,S> = ORDER.ID THEN
                      DONE = YES
                      C.POS = C
                      S.POS = S
                   END
                NEXT S
             NEXT C
             DATA = RAISE(RAISE(MNFST<16,C.POS,S.POS>))
             OLD.DATA = DATA
             LOG.INFO = C.POS:VM:MNFST<48,C.POS>; * stop number, stop id
             SOE.MANIFEST.COMMENTS 1,DATA,MNFST.VIEW.ONLY,MANIFEST.ID,LOG.INFO
             IF DATA # OLD.DATA THEN
                MANIFEST.CHANGED = YES
             END
             DATA = LOWER(LOWER(DATA))
             MNFST<16,C.POS,S.POS> = DATA
          END

          RETURN
*-------------------------------------------------------------------------*
EDIT.MNFST: *** Edit selected manifest.

          IF MANIFEST.CHANGED THEN
             GOSUB UPD.MANIFEST
          END

          SOE.MANIFEST.QUEUE MANIFEST.ID

          * Reread manifest record in case changes made
          MATREAD LED FROM LEDFILE,OID ELSE PRINT BELL:; GOTO IN.OID
          SLIST = ""
          GOSUB GET.SLIST
          GOSUB LOAD.HOTKEYS
          GOSUB DISPLAY

          RETURN
*-------------------------------------------------------------------------*
SER.NUM:  *** Serial number hot key and auto close.

          IF SLIST THEN
             IF SN.AUTO.CLOSE THEN
                UPD.SERS.OK = NO
                GOSUB UPD.SERS
                IF UPD.SERS.OK THEN
                  ANS = ""
SER.NUM.PRMT:     INP.PROMPT ANS,"Enter Serial Numbers Now (Y/N) : ","YN",1
                  IF ANS THEN GOSUB UPD.SERS
                END
             END ELSE
                UPD.SERS.OK = YES
                GOSUB UPD.SERS
             END
          END

          RETURN
*-------------------------------------------------------------------------*
CTN.STATUS: * Carton Status

          CTN.ID = ''
          TOTE.ID= ''
          PACK.STATUS BR,OID,GEN,CTN.ID,TOTE.ID,YES

          IF CTN.ID THEN
             PASS.VAR = OID:AM:GEN:AM:BR:AM:'W':AM:CTN.ID:AM:TOTE.ID
             PACK.MAINT PASS.VAR
          END

          RETURN
*-------------------------------------------------------------------------*
UPD.SERS: *** Check and update serial numbers.

          OE.LOCK.LED OID,LOCK.MSG
          IF NOT(LOCK.MSG) THEN
             LDIDS = SLIST
             LD.CT = DCOUNT(SLIST,AM)
             FOR LDN = 1 TO LD.CT
                LDID = LDIDS<LDN>
                LD.GET LDID
                * Get the product information
                OE.GET.QSIGN QSIGN,OID,GEN
                GET.ALL.PRD LED(2)<1,GEN,2>,LD(1),QSIGN
                MAT OLD.LD = MAT LD
                MAT OLED   = MAT LED
                SER.NUM    = PRD.BR(25)
                IF NOT(UPD.SERS.OK) THEN
                  NEED.CHECK = NO
                  OE.SERIAL.CHECK OID,GEN,LDID,SER.NUM,1,NO,YES,NEED.CHECK
                  IF NEED.CHECK THEN
                     UPD.SERS.OK = YES
                     EXIT
                  END
                END ELSE
                  OE.SERIAL.CHECK OID,GEN,LDID,SER.NUM,1,VIEW.ONLY,NO,YES
                END
             NEXT LDN
             UPDATE.LEDGER OID,GEN
             OE.UNLOCK.LED OID
          END

          RETURN
*-------------------------------------------------------------------------*
GET.SLIST: *** Build list of serialized LDIDS for serial# entry

          LDIDS= RAISE(LED(48)<1,GEN>)
          LCNT = DCOUNT(LDIDS,VM)
          FOR L = 1 TO LCNT
             LDID = LDIDS<1,L>
             LD.GET LDID
             IF LD(1) AND NUM(LD(1)) THEN
                PN = LD(1)
                GET.PRD.BR LED(2)<1,GEN,2>,PN
                QSHP = SUM(LD(5)<1,GEN>) + SUM(LD(6)<1,GEN>)
                GOSUB CHK.SER
             END
          NEXT L

          RETURN
*-------------------------------------------------------------------------*
LOAD.HOTKEYS: *** Load Hotkeys

          MENU.CLEAR
          IF VIEW.ONLY THEN
             MENU.LOAD                   ;*<Confirm>
             MENU.LOAD                   ;*<RePrint>
          END ELSE
             MENU.LOAD  2,16, 7,1,"C"    ;* Confirm
             MENU.LOAD 12,16, 7,3,"P"    ;* RePrint
          END
          MENU.LOAD 22,16, 4,1,"V"       ;* View

          IF VIEW.ONLY THEN
             MENU.LOAD                   ;*<Edit>
             MENU.LOAD                   ;*<Label>
             IF VONLY.MSG THEN
                MENU.LOAD 54,16,10,1,"I" ;* In Process
             END ELSE
                MENU.LOAD                ;*<In Process>
             END
             MENU.LOAD                   ;*<Freight>
             MENU.LOAD                   ;*<Ready to Mnfst>
             MENU.LOAD                   ;*<Mfst Comments>
             MENU.LOAD                   ;*<Edit Mnfst>
             MENU.LOAD                   ;*<Serial Numbers>
          END ELSE
             MENU.LOAD 29,16, 4,1,"E"    ;* Edit
             MENU.LOAD 36,16, 5,1,"L"    ;* Label
             IF UPD.WHQ THEN
                MENU.LOAD 54,16,10,1,"I" ;* In Process
             END ELSE
                MENU.LOAD                ;*<In Process>
             END
             MENU.LOAD 44,16,7,1,"F"     ;* Freight
             GOSUB CHK.MANIFEST
             * Load Ready to Mnfst Key only if manifest is enabled
             * and the order is not currently on a manifest
             IF MNFSTG AND NOT(ORD.ON.MANIFEST) THEN
                MENU.LOAD  2,18,14,1,"R" ;* Ready to Mnfst
             END ELSE
                MENU.LOAD                ;*<Ready to Mnfst>
             END
             * Load Mnfst Comments key
             * if order is currently on a manifest
             IF ORD.ON.MANIFEST THEN
                MENU.LOAD 19,18,14,1,"M" ;* Mnfst Comments
                MENU.LOAD 36,18,10,2,"D" ;* EDit Mnfst
             END ELSE
                MENU.LOAD                ;*<Mfst Comments>
                MENU.LOAD                ;*<Edit Mnfst>
             END
             IF SLIST THEN
                MENU.LOAD 49,18,14,1,"S" ;* Serial Numbers
             END ELSE
                MENU.LOAD                ;*<Serial Numbers>
             END
          END
          MENU.LOAD 2,20,14,4,'T'; * Carton Status

          RETURN
*-------------------------------------------------------------------------*
CHECK.AUTH: *** Check if user is authorized for branch# on order.

          AUTH.OK = YES
          IF MODE = "T" THEN
             LOCATE LED(2)<1,GEN,1> IN SECURITY<9> SETTING POS ELSE
                LOCATE LED(2)<1,GEN+1,1> IN SECURITY<9> SETTING POS ELSE
                    MESS 10,10,BELL:"Not Authorized for Branch # ":LED(2)<1,GEN,1>:" or ":LED(2)<1,GEN+1,1>
                   AUTH.OK = NO
                END
             END
          END ELSE
             LOCATE LED(2)<1,GEN,1> IN SECURITY<9> SETTING POS ELSE
                LOCATE LED(2)<1,GEN,2> IN SECURITY<9> SETTING POS ELSE
                   MESS 10,10,BELL:"Not Authorized for Branch # ":LED(2)<1,GEN,1>
                   AUTH.OK = NO
                END
             END
          END

          RETURN
*-------------------------------------------------------------------------*
CHK.MANIFEST: *** Check if Order is on Manifest and whether it's editable.

          MNFSTG           = YES
          ORD.ON.MANIFEST  = NO
          MNFST            = ""
          MANIFEST.CHANGED = NO
          MNFST.VIEW.ONLY  = NO

          OLD.MNSFT = ""

          READV MNFST.IDS FROM LEDLFILE,OID,17 ELSE MNFST.IDS = ""
          MANIFEST.ID = MNFST.IDS<1,GEN>
          IF MANIFEST.ID THEN
             READ MNFST FROM MNFSTFILE,MANIFEST.ID THEN
                ORD.ON.MANIFEST = YES
                OLD.MNFST       = MNFST
             END
          END

          IF MNFST<7> OR NOT(MNFSTG) THEN
             MNFST.VIEW.ONLY = YES; * Closed mnfst is view.only
          END ELSE
             CHECK.KEY "SOE.MANIFEST.EDIT",EDIT.OK, EDIT.LVL
             IF NOT(EDIT.OK) THEN
                MNFST.VIEW.ONLY = YES
             END
          END
          IF VIEW.ONLY THEN MNFSTG = NO

          RETURN
*-------------------------------------------------------------------------*
CHK.INPROCESS: *** Select InProcess orders.

          GID = LED(12)<1,GEN>
          ORD.ID = OID:".":GID
          SEL.LN = 'SELECT WHSE.QUEUE WITH &INDEX&.ORDERID "':ORD.ID:'~P"'
          IF CHK.TOTE THEN
             SEL.LN := ' AND WITHOUT TOTE.ID'
          END
          CLEARSELECT
          EXECUTE SEL.LN CAPTURING MSG
          READLIST TST ELSE TST = ""
          ORD.OPEN = (TST#"")

          RETURN
*-------------------------------------------------------------------------*
DISP.INP.ERR: *** Display InProcess quantities on order error message.

          P.MSG = "There are still inprocess quantities for this order, <Return> "
          RESP = ""
INP.PRMT: INP.PROMPT RESP,P.MSG,,1

          RETURN
*-------------------------------------------------------------------------*
UPD.MANIFEST: *** Update Manifest record.

          UPDATE.RECORD "MANIFESTS",MNFSTFILE,MANIFEST.ID,OLD.MNFST,MNFST,UPD.ERR,CHNG
          RELEASE MNFSTFILE,MANIFEST.ID
          IF UPD.ERR THEN
             P.MSG = "Manifest Comments updated by another user while editing, <Return> "
             RESP = ""
MAN.PRMT:    INP.PROMPT RESP,P.MSG,,1
             RETURN TO ID.VER
          END

          RETURN
*-------------------------------------------------------------------------*
INIT:     *** Initialize variables and print column header information.

          PICKER    = USER.ID
          ID        = "" ; *of the order
          STAT      = "" ; *review queue status
          NEXT.STAT = "" ; *next status in pre-defined sequence
          STAT.STR  = "" ; *captured to determine next status step
          TLOCS     = "" ; *Staging locations from PRINT.REVIEW
          TPKGS     = "" ; *PKG Data from PRINT.REVIEW
          DRPT      = "" ; *global
          TEMP      = "" ; *vscroll input variable
          TLOCS     = "" ; *temporary array from vscroll area input
          TPKGS     = "" ; *ditto
          TQTYS     = "" ; *package line quantities
          TRKIDS    = ""
          PKG.DATA  = ""
          ORD.ON.MANIFEST = ""

          * Serial number auto close flag used during serial number check
          * and prompting.
          SN.AUTO.CLOSE = NO
          SLIST = ""

          GET.TTY TTY.BR%,,,TTY.SHIPVIA%,TTY.RELOG%

          *** Column headings 2-5 above the vscroll region
          READV PACKAGES FROM CTRLFILE,"PACKAGE.TYPES",1 ELSE
             PACKAGES = ""
          END

          *** If the Warehouse Confirmation Picking Queue has the serial
          *** number/tracking number logic turned on, get the assigned colu
          *** column titles
          READV COL.TITLES FROM CTRLFILE,"WHSE.PKG.TRACKING.TITLES",1 ELSE
             COL.TITLES = ""
          END

          *** Check to see which view customer will see.
          READV DISP.HDR FROM CTRLFILE,"WHSE.PICK.COL",1 ELSE DISP.HDR = ""

          *** Print the column headers
          COL.CNT = DCOUNT(COL.TITLES,VM)
          IF COL.CNT > 2 THEN COL.CNT = 2
          PKG.CNT = DCOUNT(PACKAGES,VM)
          IF PKG.CNT > 4 THEN PKG.CNT = 4
          FOR PP = 1 TO PKG.CNT
             COL.HDR = "# ":PACKAGES<1,PP>
             ST.POS = 14 + (PP-1)*8
             PRINT @(ST.POS,9):COL.HDR"L#7"
          NEXT PP

          IF DISP.HDR THEN
             FOR CT = 1 TO COL.CNT
                COL.HDR = TRIM(COL.TITLES<1,CT>)
                ST.POS = 47 + (CT-1)*10
                PRINT @(ST.POS,9):COL.HDR"L#8"
             NEXT CT
          END

          RETURN
*-------------------------------------------------------------------------*
SET.VONLY:*** Set view only flag and message.
          *** Display in view only mode if there are default
          *** in-process statues and the order is in-process.

          DFLT.STATS = ""
          READ TERR FROM TERRFILE,STK.BR ELSE TERR = ""
          LOCATE LED(70)<1,GEN> IN TERR<18> SETTING DPOS THEN
             DFLT.STATS = RAISE(TERR<23,DPOS>)
          END
          IF DFLT.STATS<1,1> = "" THEN RETURN

          CHK.TOTE = NO
          GOSUB CHK.INPROCESS
          IF ORD.OPEN THEN
             VIEW.ONLY = YES
             VONLY.MSG = "Order is in process. View Only."
          END

          RETURN
*-------------------------------------------------------------------------*
CHK.SER:  *** Check serial
          *** Auto assign serial numbers from PROD.DYNAM File - No Defective
          *** or R. Prompt for serial entry if not "A" and they have the
          *** flag set to "Y"

          IF NOT(LD(31)) THEN; *Check if this is a kit
             SER.KIT = NO
             SERL    = PRD.BR(25)
             GOSUB CHK.ONES
          END ELSE
             SER.KIT = YES
             GOSUB CHK.SKIT
          END

          RETURN
*-------------------------------------------------------------------------*
CHK.ONES: *** Check one of the products for serial tracking.

          BEGIN CASE
          * No serial entry on this product don't bother with it...
          CASE SERL = "N" OR NOT(SERL)
             NULL
          * Auto assign "A" and "D" type serial numbers to this order...
          CASE (SERL="A" OR SERL="D") AND MODE="S" AND QSHP<0
             * Auto assign "A" & "D" type serial numbers to this order
             IF SER.KIT THEN
                * save data
                MATBUILD SV.PRD  FROM PRD.BR
                MATBUILD SV.PRDD FROM PRDD.BR

                PRD.BR.GET  STK.BR,KPN
                PRDD.BR.GET STK.BR,KPN

                OE.SERIAL.AUTO.ASSIGN KPN,STK.BR,GEN,KN,KQTY

                MATPARSE PRD.BR  FROM SV.PRD
                MATPARSE PRDD.BR FROM SV.PRDD

                IF DCOUNT(LD(83)<1,GEN,KN>,SSVM) # KQTY THEN
                   LOCATE LDID IN SLIST SETTING NADA ELSE
                      SLIST<-1> = LDID
                   END
                END
             END ELSE
                KPN = LD(1)
                MAT OLD.LD = MAT LD

                OE.SERIAL.AUTO.ASSIGN KPN,STK.BR,GEN,,QSHP
                * Serial numbers still needed so prompt
                IF DCOUNT(LD(32)<1,GEN>,SVM) # ABS(QSHP) THEN
                   LOCATE LDID IN SLIST SETTING NADA ELSE
                      SLIST<-1> = LDID
                   END
                END
             END
          CASE SFLAG AND SERL = "I"
             LOCATE LDID IN SLIST SETTING NADA ELSE
                SLIST<-1> = LDID
             END
          * For POs that don't match prompt on anything
          * except "O" and "R" types
          CASE SFLAG AND SERL#"O" AND SERL#"R" AND MODE="P"
             LOCATE LDID IN SLIST SETTING NADA ELSE
                SLIST<-1> = LDID
             END
          * On "O" Types we only care that this product
          * is going out and only
          CASE SFLAG AND MODE="S" AND (QSHP<0 OR RET.SER.ENTRY$) AND SERL="O"
             LOCATE LDID IN SLIST SETTING NADA ELSE
                SLIST<-1> = LDID
             END
          * On "R" types we also need to prompt on return sales orders...
          CASE SFLAG AND MODE="S" AND SERL="R"
             LOCATE LDID IN SLIST SETTING NADA ELSE
                SLIST<-1> = LDID
             END
          END CASE

          RETURN
*-------------------------------------------------------------------------*
CHK.SKIT: *** Check kit comps to see if they're serialized

          LOCATE LDID IN SLIST SETTING LD.SPOS THEN RETURN
          IF LD(31) = "" THEN RETURN
          MAT OLD.LD = MAT LD
          KCT = DCOUNT(LD(31)<1>,VM)
          FOR KN = 1 TO KCT
             KPN = LD(31)<1,KN>
             KQTY= ABS(LD(30)<1,KN>*QSHP)
             PRD.BR.GET.VAL STK.BR,KPN,25,SERL
             GOSUB CHK.ONES
          NEXT KN

          RETURN
*-------------------------------------------------------------------------*
DISPLAY:  *** Display information to screen.

          IF VIEW.ONLY THEN
             PRINT @(2,0):BLINK$:"View Only":NORM$
          END ELSE
             PRINT @(2,0):""
          END
          PRINT @(18,1):ORN                             "L#14"
          PRINT @(18,2):CUS(1)                          "L#35"
          PRINT @(18,3):OCONV(LED(9)<1,GEN>,"D2/")      "L#10"
          PRINT @(18,4):SHIP.VIA                        "L#30"
          PRINT @(24,6):USER.ID                         "L#12"
          IF ORD.ON.MANIFEST THEN
             PRINT @(38,6):"Manifest#   : ":MANIFEST.ID "L#12"
          END
          PRINT @(24,7):STAT                            "L#13"
          PRINT @(52,7):NEXT.STAT                       "L#13"

          VCLR 1
          LINES = DCOUNT(TLOCS,AM)
          FOR LINE = 1 TO LINES
             VPRINT 0,LINE,TLOCS<LINE>                  "L#12"
             FOR PK = 1 TO 4
                ST.POS = 13 + (PK-1)*8
                VPRINT ST.POS,LINE,TPKGS<LINE,PK>       "R#6"
             NEXT PK

             IF DISP.HDR THEN
                VPRINT 45,LINE,TQTYS<LINE>              "L#8"
                VPRINT 55,LINE,TRKIDS<LINE>             "L#9"
             END
          NEXT LINE
          LINE = 1

          RETURN
*-------------------------------------------------------------------------*
UPD.PRVW: *** Update print.review record

          PRVW<12> = "@@@"; * Need to set pick group for correct capture
                            * of pkg qtys in LEDGER.LOG record

          UPDATE.RECORD "PRINT.REVIEW",PRVWFILE,RVW.ID,OLD.PRVW,PRVW,UPD.ERR
          RELEASE PRVWFILE,RVW.ID

          IF UPD.ERR THEN
             MESS 15,1,BELL:"Item updated by another user while editing"
             READ PRVW FROM PRVWFILE,RVW.ID ELSE
                PRVW = "CLOSED"
                VIEW.ONLY = YES
             END
          END ELSE
             OLD.PRVW = PRVW
          END
          GOSUB UPD.LEDL

          RETURN
*-------------------------------------------------------------------------*
UPD.LEDL: *** Update LEDGER.LOG record with staging/pkg info

          READU LEDL FROM LEDLFILE,OID ELSE LEDL = ""
          P.CT = DCOUNT(PRVW<12>,VM)
          FOR P = 1 TO P.CT
             LPCKS    = ""
             LTOTES   = ""
             LSTGS    = ""
             LPKGS    = ""
             LEDL28   = ""
             LEDL29   = ""
             LOCQTYS  = ""
             LTRKRS   = ""

             PCK.IDS  = PRVW<10,P>; * Picker IDs
             TOTE.IDS = PRVW<11,P>; * Tote#s
             STG.IDS  = PRVW<13,P>; * Staging locations
             PKG.IDS  = PRVW<14,P>; * Package Qtys
             PRVW15   = PRVW<15,P>
             PRVW16   = PRVW<16,P>
             TRK.IDS  = PRVW<20,P>
             LQTYS    = PRVW<21,P>

             STG.CNT = DCOUNT(STG.IDS,SVM)
             FOR T = 1 TO STG.CNT
                PCK.ID  = PCK.IDS<1,1,T>
                TOTE.ID = TOTE.IDS<1,1,T>
                STG.ID  = STG.IDS<1,1,T>
                PKG.ID  = PKG.IDS<1,1,T>
                P15     = PRVW15<1,1,T>
                P16     = PRVW16<1,1,T>
                TRKR.ID = TRK.IDS<1,1,T>
                LOC.QTY = LQTYS<1,1,T>

                LOCATE STG.ID IN LSTGS<1,1> SETTING POS THEN
                   LPCKS<1,1,-1>  = PCK.ID
                   LTOTES<1,1,-1> = TOTE.ID
                   LSTGS<1,1,-1>  = STG.ID
                   LPKGS<1,1,-1>  = PKG.ID
                   LEDL28<1,1,-1> = P15
                   LEDL29<1,1,-1> = P16
                   LTRKRS<1,1,-1> = TRKR.ID
                   LOCQTYS<1,1,-1>= LOC.QTY
                END ELSE
                   LPCKS<1,1,POS>  = PCK.ID
                   LTOTES<1,1,POS> = TOTE.ID
                   LSTGS<1,1,POS>  = STG.ID
                   LPKGS<1,1,POS>  = PKG.ID
                   LEDL28<1,1,POS> = P15
                   LEDL29<1,1,POS> = P16
                   LTRKRS<1,1,POS> = TRKR.ID
                   LOCQTYS<1,1,POS>= LOC.QTY
                END
             NEXT T

             LEDL<20,GEN> = LPCKS
             LEDL<21,GEN> = LTOTES
             LEDL<22,GEN> = LSTGS
             LEDL<35,GEN> = LPKGS
             LEDL<28,GEN> = LEDL28
             LEDL<29,GEN> = LEDL29
             LEDL<40,GEN> = LTRKRS
             LEDL<41,GEN> = LOCQTYS

          NEXT P

          * Update total pkg qtys
          LEDL<18,GEN> = ""
          PKG.DATA = RAISE(RAISE(LEDL<35,GEN>))
          P.CT = DCOUNT(PKG.DATA,AM)
          FOR P = 1 TO P.CT
             FOR J = 1 TO PKG.CNT
               IF PKG.DATA<P,J>#'' THEN LEDL<18,GEN,J> += PKG.DATA<P,J>
             NEXT J
          NEXT P

          WRITE LEDL ON LEDLFILE,OID

          RETURN
*-------------------------------------------------------------------------*
CHECK.CASH: *** Check that Cash Required is fulfilled of sales orders

          PMNT.REQD  = NO
          PMNT.MADE  = NO
          SV.GEN     = GEN
          SOE.CALC.CASH OID,GEN,AMT.DUE
          OE.ORDER.TOTAL OID,GEN,QSIGN,TOT.AMT,SUB.TOL,,,TAX.TOL
          IF (AMT.DUE#0 AND TOT.AMT#0) THEN
             IF AMT.DUE < 0 THEN
                SOE.CREDIT.CHECK LED(5)<1,GEN>,,COD,,,,,OID,GEN
                IF NOT(COD) THEN RETURN
             END
             PMNT.REQD = YES

             *** Check to see if user has auth to override payment req.
             *** If not, prompt user if they want to continue.
             *** Once user is in SOE.TOTALS, they must enter payment.
             CHECK.KEY 'SOE.CASH.REQD.EDIT',AUTH.OK
             IF NOT(AUTH.OK) THEN
                ANS     = ''
                MSG     = 'Payment is required to print ticket.'
                MSG<-1> = 'Enter payment now? (Y/N)'
IN$$7:          INP.PROMPT ANS,MSG,'YN',1
             END ELSE
                ANS = YES
             END

             IF ANS THEN
                OE.LOCK.LED OID,LOCK.MSG,YES
                IF NOT(LOCK.MSG) THEN
                   LOG.MV = GEN
                   OE.TOTALS OID,GEN,LOG.MV,NO,,PMNT.REQD,,,,YES
                   UPDATE.LEDGER OID,GEN
                   OE.UNLOCK.LED OID
                   * To get out of SOE.TOTALS, user either had to
                   * enter payment or override cash required.  Set to yes
                   * since we are now ok to print ticket.
                   PMNT.MADE = YES
                END ELSE
                   CHECK.RECORD.LOCK LEDFILE,OID,IS.LOCKED,USER
                   MSG = "Order ":OID:" is being edited by ":USER
                   MSG<-1> = "Cash Required on this order, <Return> "
                   ANS = ""
CASH.REQ.PRMT:     INP.PROMPT ANS,MSG
                END
             END
          END
          GEN = SV.GEN

          RETURN
*-------------------------------------------------------------------------*
FILEIT:   *** If F12 then abort, otherwise save changes and restart.

          IF F12 THEN
             CONFIRM.ABORT SURE
             IF NOT(SURE) THEN GOTO INUSER
          END ELSE
             IF MANIFEST.CHANGED THEN
                GOSUB UPD.MANIFEST
             END
             GOSUB UPD.PKG.DATA
             GOSUB UPD.PRVW
          END

          IF TTY.RELOG% THEN RELOG.NOW = YES ELSE GOTO START
*-------------------------------------------------------------------------*
FINISH:   *** Close window and exit.

          WINDOW.CLOSE

          RETURN
*-------------------------------------------------------------------------*
IN$$3:    * RESERVED - IN.PKG label was changed and default input IN$$3 was
          * changed.  The help document still refers to IN$$3, so this should
          * not be used as an input anywhere else.

          !AGARZA~06/15/07~08:33
!TSMITH~08/08/17~07:46
